基本信息
自 2.0.4开发 Maven
c
repositories {
maven { url = "https://maven.firstdark.dev/snapshots" } // LDLib2, Photon2
}
dependencies {
// LDLib2
implementation("com.lowdragmc.ldlib2:ldlib2-neoforge-${minecraft_version}:${ldlib2_version}:all") { transitive = false }
compileOnly("org.appliedenergistics.yoga:yoga:1.0.0")
// Photon2
implementation("com.lowdragmc.photon:photon-neoforge-${minecraft_version}:${photon2_version}") { transitive = false }
}最新版本
如何加载和使用效果文件?
java
FX fx = FXHelper.getFX(ResourceLocation.parse("photon:fire"));
// 绑定到一个方块
new BlockEffectExecutor(fx, level, pos).start();
// 绑定到一个实体
new EntityEffectExecutor(fx, level, entity, AutoRotate.NONE).start();实现你自己的 IEffectExecutor 来管理 Photon 效果的生命周期。
有时候,你想用额外的逻辑来控制你的效果。 你可以实现 IEffectExecutor 并做你想做的事。
java
public interface IEffectExecutor {
Level getLevel();
/**
* 在 FX 对象持续时间内的每一 tick 更新。在这里执行低频逻辑。
* <br>
* 例如:清除粒子
* @param fxObject fx 对象
*/
default void updateFXObjectTick(IFXObject fxObject) {
}
/**
* 在渲染期间每帧更新每个 FX 对象。在这里执行高频逻辑。
* <br>
* 例如:更新发射器位置、旋转、缩放
* @param fxObject fx 对象
* @param partialTicks partialTicks
*/
default void updateFXObjectFrame(IFXObject fxObject, float partialTicks) {
}
default RandomSource getRandomSource() {
return getLevel().random;
}
}查看上方的 ExampleExecutor 标签页了解它是如何工作的。
java
FX fx = FXHelper.getFX(ResourceLocation.parse("photon:fire"));
var executor = new ExampleExecutor(fx, level);
executor.emit();